package com.jg.test.Page;

import lombok.Getter;
import lombok.Setter;

import java.lang.reflect.InvocationTargetException;
import java.util.Scanner;


@Getter
@Setter
public abstract class Page {

    // 实现上一个选项的功能
    public abstract void effect() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException;

    // 发送本界面信息
    public abstract void sendMessage();

    // 前往下一页面
    public abstract void next();

    /**
     * 使玩家合法输入0-Max之间的数字
     *
     * @param max 规定输入数字的上限。从0开始，包括本身。
     * @return 合法输入的数字。
     */
    public static int numGet(int max) {
        Scanner scanner = new Scanner(System.in);
        boolean isLegal = true;
        String numTool = "";
        while (isLegal) {
            numTool = scanner.nextLine();
            if (numTool.equals("")) {
                System.out.println("请输入数值！");
            }
            boolean isNumeric = false;
            for (int i = 0; i < numTool.length(); i++) {
                if (!Character.isDigit(numTool.charAt(i))) {
                    isNumeric = true;
                }
            }
            if (isNumeric) {
                System.out.println("错误的输入类型！");
            } else if (Integer.parseInt(numTool) > max || Integer.parseInt(numTool) < 0) {
                System.out.println("错误的输入范围！");
            } else {
                isLegal = false;
            }
        }
        return Integer.parseInt(numTool);
    }
}
